CAD products may be used to design and capture the three-dimensional (3D) shapes that are designed by engineers. Such 3D CAD products have evolved over the years and different levels of this technology are still used today. In the order of the earliest to most recent 3D technology developed, CAD products include 3D wireframe modeling, 3D surface modeling, 3D solid modeling, and 3D feature-based modeling. Wireframe modeling systems capture only the edges of a model. The edges are defined by geometry consisting of lines, arcs, and other types of curves. Three-dimensional surface modeling systems extend the functionality of wireframe modeling systems one step further by also defining surfaces in the CAD model. By way of non-limiting example, surfaces can include planes, cylinders, and cones.
Three-dimensional solid modeling systems combine wireframe and surface geometry techniques in such a way that the systems have knowledge of the connectivity of all the geometry in a part. A 3D solid modeling system keeps track of which edges border a surface and which two surfaces intersect to define an edge. This geometric “book-keeping” is done for the user by solid modeling software. Primitive solid shapes such as blocks, cylinders, and cones can be combined, and the software system ensures that all the geometry is connected in such a way so that a “water-tight” model is maintained.
Three-dimensional feature-based CAD modeling systems extend solid modeling techniques still further. Rather than constructing models as a collection of simple geometric primitives, 3D feature-based CAD modeling systems use features. Some examples of features include an extrusion created by extruding a shape a specified distance, a fillet that rounds one or more sharp edges in a model, a shell that hollows out a model of a part or a portion thereof, and a hole. Information regarding the definition of a feature can be captured. This information can describe how to construct the feature and can include parameters, such as a diameter of a hole. The definition of a feature also can include geometry referenced from previously defined features (e.g., a definition of a hole can include a distance from an edge of some previously created feature to specify the location of the hole). By capturing this type of information, 3D feature-based CAD modeling systems have the ability to update features as needed when a change is made. For example, by changing a parameter that specifies a diameter of a hole, the geometry of the hole can be updated to reflect the new diameter. If a parent feature (i.e., a previously defined feature having a hierarchical path to subordinate features) changes, subsequently defined features that implicitly reference the parent feature as a result of the hierarchical relationships of the features (hereinafter referred to as children or child features) will be updated to maintain the previously defined relationship, such as the hole maintaining a distance from an edge in a parent feature.
Due to parent/child relationships between features that are created and updating that occurs as a consequence of the dependency of a child feature upon that child feature's parent or parents, the sequence or order of the features in the hierarchical data structure is very important. In 3D feature-based CAD modeling systems, a parent should always be defined prior to any of its dependent children (e.g., a face feature having a size on which a hole feature's location is dependent).
In addition to parent/child relationships, feature order can influence the resulting geometry of a model and the extent to which updates, which may be needed when a change is made to the model, will be successful. Moreover, the combinations of references and the types of references used in the definition of a feature also can influence the geometry of a model and the extent to which updates will be successful.
An ordered list of features provides a recipe for constructing a model in a 3D feature-based CAD modeling system, or feature-based modeler. The recipe is evaluated in order when the model needs to be updated, such as, by way of non-limiting example, when a change is made to the model. Under certain circumstances, however, after a change or changes are made to a model, the CAD system may be unable to update one or more features successfully. Problems that may prevent a successful update include geometry from an earlier-defined feature being too small to accommodate geometry from a later-defined feature or references used in the definition of a feature no longer existing or accessible in the model. The kinds and combinations of problems that can occur in a model can be overwhelming for a user. When a problem occurs, a CAD system may identify the features that cannot successfully update so that the user can begin the process of manually fixing or manually reordering the features of the model with the goal of ordering the features in such a way as to enable successful updates.
Models can contain hundreds of features, and managing and fixing the order of features in a model hierarchy and the relationships among various features in a model can be very time consuming for the user. Fixing problems once the problems occur demands a great deal of insight from the user with regards to how all the features interact to define a model (e.g., parent-child relationships and cross-references). Problem solving also requires forethought with regards to defining features, with the interrelationships of various features in mind to promote the best chance of successfully updating the features. As a result, 3D feature-based CAD modeling systems can be difficult to use, even with models of modest complexity.